ShaderGraphでUGUIのマテリアルを作成しScreen Space - Overlayで表示したい(LWRP/HDRP)
はじめに
UnityのShaderGraph便利ですよね。 これをUGUIの要素にも使いたいのですが、 現時点では「Screen Space - Overlay」のCanvasとともに使うと 不具合が生じています。 この不具合を回避する方法をHDRPとLWRPの両方で見つけたのでメモします。
- Unity: 2019.2.6f1
UnityのShaderGraph便利ですよね。 これをUGUIの要素にも使いたいのですが、 現時点では「Screen Space - Overlay」のCanvasとともに使うと 不具合が生じています。 この不具合を回避する方法をHDRPとLWRPの両方で見つけたのでメモします。
Unityの従来のレンダーパイプラインではGrabPass
という特殊なパスが存在しました。
このパスを利用することで、それまでにレンダリングした絵をテクスチャとして利用できました。
このパスを利用することで屈折表現やその他特殊な表現を実装することもありました。
このパスは便利だったのですが、
LWRPやHDRPなどのSRPではGrabPass
が廃止されてしまいました。
今回はHDRPでのGrabPass
の代替表現について軽く調べたのでまとめます。
現時点でのShader Graphではライトの情報を取得するノードがありません。 ライトの情報を取得するカスタムノードを作成している方がいたので、 そのカスタムノードについて紹介します。
Unityの従来のレンダーパイプラインではGrabPass
という特殊なパスを利用して
それまでにレンダリングした絵をテクスチャとして利用できました。
LWRPを含むSRPではGrabPass
が使えなくなります。
LWRPではGrabPass
の代替として_CameraOpaqueTexture
というものが用意されています。
このテクスチャをShader Graphから利用してみます。